package com.itheima.bos.web.action.take_delivery;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import com.itheima.bos.web.action.common.BaseAction;
import com.opensymphony.xwork2.ActionContext;
	/*
	 * 处理kindeditor图片上传,管理管理功能
	 */
@Namespace("/")
@ParentPackage("json-default")
@Scope("prototype")
@Controller
public class ImageAction extends BaseAction<Object> {

	private File imgFile;
	private String imgFileFileName;
	private String imgFileContentType;

	public void setImgFile(File imgFile) {
		this.imgFile = imgFile;
	}

	public void setImgFileFileName(String imgFileFileName) {
		this.imgFileFileName = imgFileFileName;
	}

	public void setImgFileContentType(String imgFileContentType) {
		this.imgFileContentType = imgFileContentType;
	}

	@Action(value = "image_upload", results = { @Result(name = "success", type = "json") })
	public String upload() throws IOException {

		System.out.println(imgFile);
		System.out.println(imgFileFileName);
		System.out.println(imgFileContentType);

		// 保存图片的绝对路径
		String savePath = ServletActionContext.getServletContext().getRealPath("/upload");

		// 返回的相对路径
		String saveUrl = ServletActionContext.getRequest().getContextPath() + "/upload/";

		// 生产随机的文件名
		UUID randomUUID = UUID.randomUUID();
		String randomFileName = randomUUID + imgFileFileName.substring(imgFileFileName.lastIndexOf("."));

		// 复制文件
		FileUtils.copyFile(imgFile, new File(savePath, randomFileName));

		// 返回json数据
		Map<String, Object> result = new HashMap<>();
		result.put("error", 0);
		result.put("url", saveUrl + randomFileName);

		ActionContext.getContext().getValueStack().push(result);
		return SUCCESS;
	}
	
	
	@Action(value = "image_manage", results = { @Result(type = "json") })
	public String manage() throws IOException {
		String realPath = ServletActionContext.getServletContext().getRealPath("/upload");
		
		File directory = new File(realPath);
		List<Map<String, Object>> fileList = new ArrayList<Map<String, Object>>();
		
		if (directory.listFiles() != null) {
			for (File file : directory.listFiles()) {
				Map<String, Object> hash = new HashMap<>();
				String fileName = file.getName();
				if (file.isDirectory()) {
					hash.put("is_dir", true);
					hash.put("has_file", (file.listFiles() != null));
					hash.put("filesize", 0L);
					hash.put("is_photo", false);
					hash.put("filetype", "");
				} else {
					String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
					hash.put("is_dir", false);
					hash.put("has_file", false);
					hash.put("filesize", file.length());
					hash.put("is_photo", true);
					hash.put("filetype", fileExt);
				}
				hash.put("filename", fileName);
				hash.put("datetime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(file.lastModified()));
				fileList.add(hash);
			}
		}

		Map<String, Object> result = new HashMap<>();
		result.put("moveup_dir_path", "");
		result.put("current_dir_path", realPath);
		result.put("current_url", ServletActionContext.getRequest().getContextPath() + "/upload/");
		result.put("total_count", fileList.size());
		result.put("file_list", fileList);

		ActionContext.getContext().getValueStack().push(result);

		return SUCCESS;
	}
}
